/*store角色管理部分*/
import http from '../../../tool/http'
import api from '../../../tool/api'

export default {
    state: {//状态
        roleData: [],
    },
    mutations: {//（修改/操作）状态
        //获取roleData的值
        getRoleData(state, arr) {
            let permissions = [...arr.permissionsData];//权限数据
            let roleData = [...arr.roleData];//角色数据

            /*角色数据加工*/
            roleData.map(outItem => {
                /*createTime调整*/
                outItem.createTime = new Date(outItem.createTime).toLocaleString('chinese', {hour12: false});//24小时记时

                /*roleDesc调整*/
                if (!outItem.roleDesc) outItem.roleDesc = '暂无描述';

                /*roleStatus调整*/
                outItem.roleStatus === 1 ? outItem.roleStatus = '正常' : outItem.roleStatus = '禁用';

                /*authName调整*/
                let finalData = [];//全新authName调整数据的数组容器（元素为数组）
                outItem.authName.map(inItem => {//inItem是权限的字符串
                    /*此处在遍历角色存放权限的数组，每一个inItem就是一个字符*/
                    permissions.map(detail => {//遍历权限去匹配对应的权限信息
                        /*此处遍历权限数据，用于置换权限信息*/
                        if (inItem === detail.authName) {//搜索到对应的权限
                            //此处已经匹配到数据了
                            if (detail.authParentId === "无父级权限") {//对应权限为无父级
                                finalData.push([detail.authId.toString()])
                            } else {//对应权限有父级权限
                                /**如果有3级权限，则需要另外写方法**/
                                finalData.push([detail.authParentId.toString(), detail.authId.toString()])
                            }
                        }
                    });
                });
                outItem.authName = [...finalData];//重新赋值
            });
            /*为roleData状态变量赋值*/
            state.roleData = [...roleData]
        },
    },
    actions: {//1.异步执行（修改/操作）状态  2.异步执行mutations里面的方法
        getRoleDataAction({commit}, permissionsData) {
            return http({
                url: api.getRoleData + '?page=1&pageSize=1000',
                method: 'get'
            }).then(res => {
                if (res.data.code === 200) {
                    res.data.data.map(i => {
                        i.authName = [...new Set(i.authName)];
                    });

                    //console.log(res.data.data);
                    commit('getRoleData', {roleData: res.data.data, permissionsData})
                }
            }).catch(err => console.log(err))
        },
    },
    getters: {//加工状态，并传递给外界
        roleData(state) {
            return state.roleData
        },
    }
}
